# 外观模式
# => ⭐为子系统中的一组接口提供一个一致的界面。
# => ⭐展示了如何用一个对象来代表整个子系统。
# => ⭐将多个子系统的多个接口封装成一个更高级、更简单的接口

# 外观模式结构中包含如下角色：
# 1. SubSystem（子系统）：一个子系统就是一个大的功能模块，如数据库、网络、文件系统等。
# 2. Facade（外观）：为子系统中的一组接口提供一个一致的界面。
# 3. Client（客户端）：使用外观来调用子系统的接口。

class SubSystem1:
    def method1(self):
        print("SubSystem1 method1")
class SubSystem2:
    def method2(self):
        print("SubSystem2 method2")

class Facade:
    def __init__(self):
        self.subsystem1 = SubSystem1()
        self.subsystem2 = SubSystem2()
    
    def method(self):
        self.subsystem1.method1()
        self.subsystem2.method2()
if __name__ == "__main__":
    facade = Facade()
    facade.method()
    # Output: SubSystem1 method1 SubSystem2 method2